<?php
	/** sous fonctionnalité de gestion des cartons d'un matche
	 * @author Sebastian Mosser
	 */

class sfManageComment extends aSubFeature {


	public function __construct() {
		  $this->_acl = new AccessControlList(); 
      $this->_acl->setGranted(1, AccessControlList::$JUST_ME); // Entraineur
      $this->_acl->setGranted(3); // Secretariat
      $this->_acl->setGranted(7); // Administrateur système
		}


	public function check($teamId) {
	
		$perm = $this->_acl->isExposable(Login::getGroups());
		$aTeam = Team::read($teamId);
		
		if ($perm == AccessControlList::$JUST_ME) {
			if (! $aTeam->canEdit(Login::getLoginId())) {
				$page = <<<EOS
<h1> Une erreur est survenue ! </h1>
<div align="center">
<p> <span class="error">Vous n'êtes pas autorisé a faire des modifications dans cette équipe car vous n'en êtes pas l'administrateur.</span></p>
</div>
<p> Si vous pensez qu'il s'agit d'une erreur, contactez le secrétariat du club qui pourra vous autoriser à y acceder.</p>
<p> Pour pouvoir modifier une équipe, vous devez être déclaré : 
<ul>
  <li> Administrateur de l'équipe </li>
  <li> Administrateur de catégorie </li>
  <li> Membre du groupe <code> Secretariat </li>
  <li> Membre du groupe <code> Administrateur Système </code> </li>
</ul>
EOS;
				return $page;
			}
		}
		return True;
	}

	protected function run() {
		
		$id = PropRetriever::getProp($_POST,"id");
		if ($id == "")
			$id = PropRetriever::getProp($_GET,"id");
		
		try {
			$aMatche = Matche::read($id);
			$teamId = $aMatche->getTeamId();
		}
		catch(Exception $e) {
			$ans  = "<h1> Une erreur est survenue ! </h1>";
			$ans .= "<div align=\"center\"> <span class=\"error\">";
			$ans .= "Le match demandé n'existe pas !";
			$ans .= "</span></div>";
			return $ans;
		}
		
		$c = $this->check($teamId);
		if ($c === True)
			return $this->process($aMatche,$id);
		else
			return $c;
	}
	
	// $aMatche est une instance de Matche, mais pas une rèf.
	private function process($aMatche,$id) {
		$action = PropRetriever::getProp($_POST,"action");
		if ($action == "save")
			return $this->saveComment($aMatche, $id);
		else
			return $this->displayform($aMatche,$id);
	}
	

	private function saveComment($aMatche,$id) {
		$i = PropRetriever::getProp($_POST,"internal");
		$e = PropRetriever::getProp($_POST,"external");
		$aMatche->setInternalComment($i);
		$aMatche->setExternalComment($e);
		$aMatche->update();
		return $this->displayForm($aMatche,$id,
															"Modification effectuée avec succès");
	
	}
	private function displayForm($aMatche,$id,$text = "") {
		$matcheResume = $aMatche->displayShort();
		$internal = $aMatche->getInternalComment();
		$external = $aMatche->getExternalComment();
		
		$resultAction = "";
		if ($text != "") {
			$resultAction = "<h2> Résultat de l'action demandée </h2>";
			$resultAction .= "<div align=\"center\"><span class=\"error\">";
			$resultAction .= $text;
			$resultAction .= "</span></div>";
		}
		
		$returnButton = sfManageAMatche::getReturnButton($id);
		
		$page = <<<EOS
${matcheResume}
<br />
${returnButton}
<h1> Gestion des Commentaires </h1>
<div align="center">
<form method="post" accept-charset="utf-8">
<table>
<tr>
<td>
  <fieldset>
		<legend> Commentaire Interne </legend>
		<label>
		<div align="left">
			Ce texte n'est visible que depuis Balloon.
		</div>
		<textarea name="internal" class="edit" rows="10">${internal}</textarea>
	</fieldset>
</label>
</td>

<td> &nbsp; &nbsp; </td>

<td>
<fieldset>
<legend> Commentaire Externe </legend>
<label>
<div align="left">
Ce texte sera publié sur le site web.
</div>
<textarea name="external" class="edit" rows="10">${external}</textarea>

</label>
</fieldset>
</td>
</tr>
<tr>
<td colspan="3" align="center">
<br />
		<input type="hidden" name="id" value="$id" />
		<input type="hidden" name="action" value="save" />
		<input type="submit" value="Enregistrer les Commentaires" class="edit" />
</td>
</tr>
</table>
</form>
</div>

${resultAction}

EOS;
		return $page;
	
	}
	
	
}

?>